Data processing systems often have numerous subsystems which operate concurrently and in many cases independently of a central processor. However, many situations can arise which require the attention of the processor. In order that such situations are addressed, the processor's currently executing program is interrupted by means of an "interrupt" signal being transmitted by the troubled subsystem. The processor then typically intervenes to determine the source of the interrupt and to take appropriate action to "service" the interrupt. After the interrupt is serviced, the processor can resume the execution of its program. Typical interrupts may occur as a result of a hardware error such as power failure or a data parity error or as a result of a software error such as an overflow condition.
Interrupts can occur asynchronously with respect to one another and with respect to a system clock. Multiple interrupts can also arise while other interrupts are being serviced. Not all interrupts have the same degree of urgency. For example, a power failure may be more critical and require prompter attention than a parity error. Multiple, asynchronously occurring interrupts with differing priority levels require a system that can capture and efficiently handle all such interrupts.